﻿// 101 最大公约数.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>



using  namespace std;


/*
http://oj.daimayuan.top/course/21/problem/486


输入T，一共T组数据，每组两个数a,b，输出它们的最大公约数和最小公倍数。

输入格式
第一行一个数字T。

接下来T行，每行两个数字a,b。

输出格式
一共T行，每行两个数，分别表示最大公约数和最小公倍数。

输入样例
2
1 2
100 150
输出样例
1 2
50 300
数据规模
对于100%
的数据，保证1≤T≤104,1≤a,b≤109。
*/


int t;

int gcd(int a, int b) {
	if (b == 0) return a;
	int  d = gcd(b, a % b);
	return d;
}


void solve() {
	int a, b; cin >> a >> b;
	cout << gcd(a, b) << " ";
	cout << 1LL * a * b / gcd(a, b) << endl;
}

int main()
{
	cin >> t;
	while (t--) {
		solve();
	}

	return 0;
}

 